[TOC]
# 数据库的搭建与配置
    # 版本Version: V1.0,2025.6.15
    # 用于：兽医宏基因组检测技术分析流程（V1.0,2025.6.15）
    # 操作系统适用: Centos7、Centos8、Centos stream9/10及Ubuntu22.04+等linux系统。
    # 作者：中国农业科学院北京畜牧兽医研究所_动物生物安全与公共卫生防控科技创新团队，沈青春

# 一、kraken2数据库的建立
# 1.下载最新的微生物数据
conda activate kraken2
# kraken2官方数据库：https://benlangmead.github.io/aws-indexes/k2，可从官方数据库直接下载不同版本kraken2数据库。
# 
# archaea:RefSeg complete archaeal genomes/proteins     #古菌
# bacteria: RefSeq complete bacterial genomes/proteins  #细菌
# plasmid: RefSeq plasmid nucleotide/protein sequences  #质粒
# viral: RefSeq complete viral genomes/proteins         #病毒
# human: GRCh38 human genome/proteins                   #人
# fungi: RefSeq complete fungal genomes/proteins        #真菌
# plant: RefSeq complete plant genomes/proteins         #植物
# protozoa: RefSeq complete protozoan genomes/proteins  #原生动物
# nr: NCBI non-redundant protein database               #非冗余蛋白库
# nt: NCBI non-redundant nucleotide database            #非冗余蛋白库
# UniVec: NCBI-supplied database of vector, adapter, linker, and primer sequences that may be contaminating sequencing  projects and/or assemblies  # 常用污染序列，如载体、头、引物等
# UniVec_Core: A subset of UniVec chosen to minimize false positive hits to the vector database                                                     # 常用污染序列核心库
# 标准模式下建的数据库只包括archaea、bacteria、human、UniVec_Core、viral等5个。
# 一个db库可以下载多个类型物种的数据，如： kraken2-build --download-library archaea --db $DBNAME; kraken2-build --download-library viral --db $DBNAME，建立的库包括archaea和viral

# 标准数据库包括archaea、bacteria、UniVec_Core、viral等4个微生物和人类（human），显然不适用于兽医检测用。原因：缺少真菌、寄生虫（通常属protozoa）、耐药基因信息（plasmid）；人类的数据多余。
# 因此，我们选择：archaea bacteria plasmid viral fungi protozoa UniVec 等7个库作为基础库，在次基础上，再添加需要做加强的序列。

# 2.兽医kraken2数据的建立
k2_db=~/DB/meta/kraken2/k2_veterinary202506      # k2_pathogen202506
mkdir -p $k2_db ; cd $k2_db
for i in archaea bacteria plasmid viral fungi protozoa UniVec; \
do kraken2-build --download-library $i --threads 32 --db $k2_db; \
done
# 数据来源于NCBI，完成后得到library文件夹，
# 确定的库建索引
kraken2-build --download-taxonomy --threads 36 --db $k2_db   # 从NCBI下载taxonomy文件夹
kraken2-build --build --threads 36 --db $k2_db               # 需要library和taxonomy两个文件夹及其中的文件，建立库文件后，不被破坏。
# 建库完成后得到hash.k2d、seqid2taxid.map、taxo.k2d、unmapped.txt和opts.k2d五个文件，其中hash.k2d、taxo.k2d、opts.k2d为数据库核心文件。

# 3.个性化数据库建立
# 下载鸡的参考基因组
cd $k2_db
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/016/699/485/GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b/GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b_genomic.fna.gz
gunzip GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b_genomic.fna.gz
kraken2-build --add-to-library GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b_genomic.fna --db $k2_db   
# 增加后鸡的参考基因组后，该k2_db库已经是适应于来源于鸡样品的数据库。

# 二、去宿主bowtie2索引建立
# db=/home/rcgh/DB
db=~/DB
mkdir -p ${db}/kneaddata
cd ${db}/kneaddata
# 下载参考基因组
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/016/699/485/GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b/GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b_genomic.fna.gz  #鸡 (chicken)参考基因组
wget -c https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/016/772/045/GCF_016772045.2_ARS-UI_Ramb_v3.0/GCF_016772045.2_ARS-UI_Ramb_v3.0_genomic.fna.gz                        #羊（Ovis）参考基因组
# 修改文件名（文件名过长）
mv GCF_016699485.2_bGalGal1.mat.broiler.GRCg7b_genomic.fna.gz broiler.GRCg7b9485.2.fna.gz
mv GCF_016772045.2_ARS-UI_Ramb_v3.0_genomic.fna.gz Ovis2045.2.fna.gz
# 解压
gunzip broiler.GRCg7b9485.2.fna.gz  Ovis2045.2.fna.gz
mkdir chicken sheep
# bowtiew建索引，输入文件，输出文件前缀，4线程2分
time bowtie2-build -f broiler.GRCg7b9485.2.fna chicken/broiler.GRCg7b9485.2 --threads 8     # 13min
time bowtie2-build -f Ovis2045.2.fna sheep/Ovis2045.2 --threads 8

# 三、taxonkit分类数据库的构建
conda activate seqtools
cd ~/.taxonkit
wget -c ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz                                  # 大小66.8M
tar -zxvf taxdump.tar.gz
